isf 0.1.0

Parsing, Deserialization and Serialization of the Interactive Shader Format.
Documentation
/*{
    "CATEGORIES": [
        "Geometry"
    ],
    "CREDIT": "",
    "DESCRIPTION": "",
    "INPUTS": [
        {
            "DEFAULT": 5,
            "LABEL": "Point Count",
            "MAX": 20,
            "MIN": 3,
            "NAME": "pointCount",
            "TYPE": "float"
        },
        {
            "DEFAULT": 5,
            "LABEL": "Buldge Amount",
            "MAX": 10,
            "MIN": 0,
            "NAME": "buldge",
            "TYPE": "float"
        },
        {
            "DEFAULT": 0.1,
            "LABEL": "Radius Inside",
            "MAX": 1,
            "MIN": 0,
            "NAME": "pointRadiusInside",
            "TYPE": "float"
        },
        {
            "DEFAULT": 0.1,
            "LABEL": "Radius Outside",
            "MAX": 1,
            "MIN": 0,
            "NAME": "pointRadiusOutside",
            "TYPE": "float"
        },
        {
            "DEFAULT": 0,
            "LABEL": "Rotation",
            "MAX": 1,
            "MIN": 0,
            "NAME": "pointRotation",
            "TYPE": "float"
        },
        {
            "DEFAULT": [
                1,
                1,
                1,
                1
            ],
            "LABEL": "Star Color",
            "NAME": "starColor",
            "TYPE": "color"
        }
    ],
    "ISFVSN": "2"
}
*/


float rand(vec2 co){
    return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
}

const float pi = 3.14159265359;

void main()	{
	vec4 inputPixelColor = vec4(0.0);
	float angleInc = 1.0 / pointCount;
	
	vec2 loc = RENDERSIZE * isf_FragNormCoord;
	//	'r' is the radius- the distance in pixels from 'loc' to the center of the rendering space
	float r = distance(RENDERSIZE/2.0, loc);
	r /= max(RENDERSIZE.x,RENDERSIZE.y);
	//	'a' is the angle of the line segment from the center to loc is rotated
	float a = atan ((loc.y-RENDERSIZE.y/2.0),(loc.x-RENDERSIZE.x/2.0));
	a += pi;
	a /= 2.0*pi;
	a += pointRotation;
	//	'at' is the angle time
	float at = mod(a,angleInc) / angleInc;
	//	'rd' is the radius at this angle for the shape 
	float starness = 10.0 - buldge;
	float rd = pointRadiusOutside * pow(at,starness) + pointRadiusInside;
	inputPixelColor = (r < rd) ? starColor : vec4(0.0);
	at = 1.0 - at;
	rd = pointRadiusOutside * pow(at,starness) + pointRadiusInside;
	inputPixelColor = (r < rd) ? starColor : inputPixelColor;
	
	gl_FragColor = inputPixelColor;
}